package com.ljm.file.record.api;

import com.ljm.common.page.PageDto;
import com.ljm.file.record.dto.SysFileDto;
import com.ljm.file.recycle.dto.SysFileRecycleDto;

import java.util.List;

/**
 * <p>
 *  平台文件信息接口
 * </p>
 *
 * @author HuamingChen
 * @since 2020-09-28
 */
public interface SysFileApi {
    /**
     * 保存文件信息
     * @param dto 文件信息
     */
    void saveFileRecord(SysFileDto dto);

    /**
     * 获取文件信息
     * @param ossFileId oss 文件id
     * @return 文件信息
     */
    SysFileDto getFileInfoByOssFileId(String ossFileId);

    /**
     * 删除文件
     * @param ossFileId 对象存储文件id
     */
    void deleteFile(String ossFileId);

    /**
     * 异步删除文件
     * @param ossFileId 对象存储文件id
     */
    void asynDeleteFile(String ossFileId);

    /**
     * 恢复异步删除文件
     * @param ossFileId
     */
    void recoveryFileByAsynDelete(String ossFileId);

    /**
     * 分页获取文件记录
     * @param dto 查询条件
     * @return 文件信息
     */
    PageDto<SysFileDto> getFileRecordByPage(SysFileDto dto);

    /**
     * 在回收站中获取文件
     * @param ossFileId 文件id
     * @return 文件信息
     */
    SysFileRecycleDto getFileInfoInRecycle(String ossFileId);

    /**
     * 文件确认
     * @param ossFileIds 文件id集合
     */
    void confirmFile(List<String> ossFileIds);
}
